﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using Model;

namespace DataAccess
{
    public class FaltanteSobrantesDataAccess
    {
        public IList<FaltantesSobrantes> ObtenerFaltantesSobrantes(DateTime fechaBusqueda)
        {
            var faltantesSobrantes = new List<FaltantesSobrantes>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerFaltantesSobrantes",
                    new[] { new SqlParameter("Fecha", fechaBusqueda) }))
            {
                while (dataReader.Read())
                {
                    faltantesSobrantes.Add(CreateEntity(dataReader));
                }
                dataReader.Close();
            }
            return faltantesSobrantes;
        }

        /*public Colaborador ObtenerColaboradorPorDocumento(int documento)
        {
            var colaborador = new Colaborador();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerColaboradorPorDocumento",
                    new[] { new SqlParameter("Documento", documento) }))
            {
                while (dataReader.Read())
                {
                    colaborador = CreateEntity(dataReader);
                }
                dataReader.Close();
            }
            return colaborador;
        }

        public IList<Colaborador> ObtenerColaboradores()
        {
            var colaborador = new List<Colaborador>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerColaboradores"))
            {
                while (dataReader.Read())
                {
                    colaborador.Add(CreateEntity(dataReader));
                }
                dataReader.Close();
            }
            return colaborador;
        }

        public void InsertarColaborador(Colaborador colaborador)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "InsertarColaborador",
                new[]
                {
                    new SqlParameter("DocumentoIdentidad", colaborador.DocumentoIdentidad),
                    new SqlParameter("TipoDocumento", colaborador.TipoDocumento),
                    new SqlParameter("Nombres", colaborador.Nombres),
                    new SqlParameter("Apellidos", colaborador.Apellidos),
                    new SqlParameter("Telefono", colaborador.Telefono),
                    new SqlParameter("Domicilio", colaborador.Domicilio)
                });
        }*/

        private FaltantesSobrantes CreateEntity(IDataReader dataReader)
        {
            return new FaltantesSobrantes()
                {
                    IdColaborador = SqlHelper.GetInt(dataReader, 0),
                    NombreColaborador = SqlHelper.GetString(dataReader, 1),
                    FechaIngreso = SqlHelper.GetDate(dataReader, 2),
                    Faltante = SqlHelper.GetDouble(dataReader, 3),
                    Sobrante = SqlHelper.GetDouble(dataReader, 4)
                };
        }

        public void InsertarActualizarFaltantesSobrantes(FaltantesSobrantes faltantesSobrantes)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "InsertarActualizarFaltantesSobrantes",
                new[]
                {
                    new SqlParameter("IdColaborador", faltantesSobrantes.IdColaborador),
                    new SqlParameter("FechaIngreso", faltantesSobrantes.FechaIngreso),
                    new SqlParameter("Faltante", faltantesSobrantes.Faltante),
                    new SqlParameter("Sobrante", faltantesSobrantes.Sobrante)
                });
        }

        public IList<FaltantesSobrantes> ObtenerListaFaltantesSobrantes(int anio, int mes, int idColaborador)
        {
            var faltantesSobrantes = new List<FaltantesSobrantes>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ListadoFaltantesSobrantes",
                    new[] { new SqlParameter("Anio", anio), new SqlParameter("IdMes", mes), new SqlParameter("IdColaborador", idColaborador) }))
            {
                while (dataReader.Read())
                {
                    faltantesSobrantes.Add(CreateEntity(dataReader));
                }
                dataReader.Close();
            }
            return faltantesSobrantes;
        }
    }
}

